Dio
Dio 模块提供了对于以下硬件的读写服务:
- DIO 通道(端口)
- DIO端口
- DIO 通道组
Dio 模块只对于在 PORT 中完成适当设置的端口起作用。因此,对于 Port 部分的初始化设置并不在 Dio 模块中。详细说明见 Port。
被 Dio 驱动配置的硬件是 GPIO。通道到引脚的映射可以通过查看 IO Muxing documention 得出。
实际通道的值可以通过以下公式得出:
Channel = DioChannelId + DioPortId*32
其中,DioPortId 是每个 Dio Port 口的数字标识,即对 PortA/B/C/D/E 映射为0/1/2/3/4,而DioChannelId 即每个端口的各个通道 Id,如:
对于通道 GPIO[35],可以在 Reference Manual 中找到是 PTB3。其 DioChannelId = 3,DioPortId = 1。
对于 Dio 的配置方式和 API 使用,UM/Driver usage and configuration tips 中给出以下描述:
Dio驱动的 API 以通道、端口和通道组为单位工作。
对于 Dio 通道:
可以对于指定引脚使用 Dio_ReadChannel(), Dio_WriteChannel(), Dio_FlipChannel() 函数操作。但是在此之前,需要进行以下操作(以 PE[5] 为例):
- 根据上述说明,DioPortId = 4, DioChannelId = 5。
- 在 DioPort 中新建一个新的 Port,将其 Id 改为 4。
- 进入该 Port 中,新建一个 DioChannel,进行命名,并将其 DioChannelId 改为 13。
- 进入
Generate/include/Dio_Cfg.h,在 DEFINES AND MACROS 中寻找到上述设定的命名,并找到其标识符对应的宏定义。如:DioConf_DioChannel_DioChannel_0。 - 利用上述 API 进行操作。
同样的,AUTOSAR 还规定了可以对于一组 Port 进行操作的 API:
- Dio_ReadPort()
- Dio_WritePort()
- Dio_MaskedWritePort()
用法与对于 Channel 的相似。
关于单个函数的定义与使用方式可以参考 UM/Module Documentation/Function Reference(6.1.3.x)。
对于 Dio 的各项配置说明由于理解难度不大,在此不再赘述,详情请参考 User Manual。